[INFO] cloning repository https://github.com/velvetops/rust-rtnw
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/velvetops/rust-rtnw" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvelvetops%2Frust-rtnw", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvelvetops%2Frust-rtnw'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 0d82e0fca59fd3d84caccebb54996c05a485bd0e
[INFO] checking velvetops/rust-rtnw against master#09a371361240e42b0d69438fd1179efcf212e576 for pr-157814-crater-rollup
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fvelvetops%2Frust-rtnw" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/velvetops/rust-rtnw
[INFO] finished tweaking git repo https://github.com/velvetops/rust-rtnw
[INFO] tweaked toml for git repo https://github.com/velvetops/rust-rtnw written to /workspace/builds/worker-0-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/velvetops/rust-rtnw on toolchain 09a371361240e42b0d69438fd1179efcf212e576
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+09a371361240e42b0d69438fd1179efcf212e576" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/velvetops/rust-rtnw already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+09a371361240e42b0d69438fd1179efcf212e576" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded num_cpus v1.10.1
[INFO] [stderr]   Downloaded spin v0.5.0
[INFO] [stderr]   Downloaded crossbeam-epoch v0.7.2
[INFO] [stderr]   Downloaded rayon v1.1.0
[INFO] [stderr]   Downloaded c2-chacha v0.2.2
[INFO] [stderr]   Downloaded memoffset v0.5.1
[INFO] [stderr]   Downloaded rand_chacha v0.2.0
[INFO] [stderr]   Downloaded autocfg v0.1.5
[INFO] [stderr]   Downloaded arrayvec v0.4.11
[INFO] [stderr]   Downloaded getrandom v0.1.6
[INFO] [stderr]   Downloaded ppv-lite86 v0.2.5
[INFO] [stderr]   Downloaded gif v0.10.2
[INFO] [stderr]   Downloaded png v0.15.0
[INFO] [stderr]   Downloaded rand_core v0.5.0
[INFO] [stderr]   Downloaded rayon-core v1.5.0
[INFO] [stderr]   Downloaded rand v0.7.0
[INFO] [stderr]   Downloaded image v0.22.1
[INFO] [stderr]   Downloaded syn v0.15.42
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:7cf07dcec6eec8f91d8fcff9552b5c74122c05467aaf1800be6da9d6f61e2ab2" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 6c4dbff8c282f5f1e8b8b514b27f637ed0c040357edd2c1ebcc3d35be5a57594
[INFO] running `Command { std: "docker" "start" "6c4dbff8c282f5f1e8b8b514b27f637ed0c040357edd2c1ebcc3d35be5a57594", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "6c4dbff8c282f5f1e8b8b514b27f637ed0c040357edd2c1ebcc3d35be5a57594" "/opt/rustwide/cargo-home/bin/cargo" "+09a371361240e42b0d69438fd1179efcf212e576" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "6c4dbff8c282f5f1e8b8b514b27f637ed0c040357edd2c1ebcc3d35be5a57594", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "6c4dbff8c282f5f1e8b8b514b27f637ed0c040357edd2c1ebcc3d35be5a57594" "/opt/rustwide/cargo-home/bin/cargo" "+09a371361240e42b0d69438fd1179efcf212e576" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v0.1.5
[INFO] [stderr]     Checking spin v0.5.0
[INFO] [stderr]    Compiling libc v0.2.60
[INFO] [stderr]     Checking cfg-if v0.1.9
[INFO] [stderr]    Compiling arrayvec v0.4.11
[INFO] [stderr]    Compiling byteorder v1.3.2
[INFO] [stderr]     Checking nodrop v0.1.13
[INFO] [stderr]     Checking scopeguard v1.0.0
[INFO] [stderr]    Compiling syn v0.15.42
[INFO] [stderr]    Compiling rayon-core v1.5.0
[INFO] [stderr]     Checking adler32 v1.0.3
[INFO] [stderr]    Compiling bitflags v1.1.0
[INFO] [stderr]     Checking either v1.5.2
[INFO] [stderr]     Checking ppv-lite86 v0.2.5
[INFO] [stderr]    Compiling memoffset v0.5.1
[INFO] [stderr]     Checking color_quant v1.0.1
[INFO] [stderr]     Checking crc32fast v1.2.0
[INFO] [stderr]     Checking inflate v0.4.5
[INFO] [stderr]     Checking gif v0.10.2
[INFO] [stderr]     Checking lazy_static v1.3.0
[INFO] [stderr]     Checking crossbeam-utils v0.6.6
[INFO] [stderr]    Compiling num-traits v0.2.8
[INFO] [stderr]    Compiling num-integer v0.1.41
[INFO] [stderr]    Compiling rand_chacha v0.2.0
[INFO] [stderr]    Compiling num-rational v0.2.2
[INFO] [stderr]    Compiling num-iter v0.1.39
[INFO] [stderr]     Checking crossbeam-queue v0.1.2
[INFO] [stderr]     Checking deflate v0.7.20
[INFO] [stderr]     Checking crossbeam-epoch v0.7.2
[INFO] [stderr]     Checking c2-chacha v0.2.2
[INFO] [stderr]     Checking png v0.15.0
[INFO] [stderr]     Checking crossbeam-deque v0.6.3
[INFO] [stderr]     Checking num_cpus v1.10.1
[INFO] [stderr]     Checking getrandom v0.1.6
[INFO] [stderr]     Checking rand_core v0.5.0
[INFO] [stderr]     Checking rayon v1.1.0
[INFO] [stderr]     Checking rand v0.7.0
[INFO] [stderr]    Compiling num-derive v0.2.5
[INFO] [stderr]     Checking tiff v0.3.1
[INFO] [stderr]     Checking jpeg-decoder v0.1.15
[INFO] [stderr]     Checking image v0.22.1
[INFO] [stderr]     Checking rust-rtnw v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/block.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/block.rs:88:37
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bbox`
[INFO] [stdout]   --> src/hitable_list.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |                         let bbox = surrounding_box(bbox, temp_box);
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_bbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/sphere.rs:64:37
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:90:37
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/translate.rs:113:28
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/translate.rs:113:37
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/texture.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn clamp(x: f32, max: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/block.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/flip.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hitable.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hitable_list.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/medium.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/rectangle.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/sphere.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/sphere.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]     |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/translate.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/translate.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/block.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/block.rs:88:37
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bbox`
[INFO] [stdout]   --> src/hitable_list.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |                         let bbox = surrounding_box(bbox, temp_box);
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_bbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/sphere.rs:64:37
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:90:37
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/translate.rs:113:28
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/translate.rs:113:37
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/texture.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn clamp(x: f32, max: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/block.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/flip.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hitable.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hitable_list.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/medium.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/rectangle.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/sphere.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/sphere.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]     |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/translate.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/translate.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/block.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/block.rs:88:37
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bbox`
[INFO] [stdout]   --> src/hitable_list.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |                         let bbox = surrounding_box(bbox, temp_box);
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_bbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/sphere.rs:64:37
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:90:37
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/translate.rs:113:28
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/translate.rs:113:37
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hit` is never used
[INFO] [stdout]   --> src/aabb.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl AABB {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn hit(&self, r: &Ray, tmin: f32, tmax: f32) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub w: Vec3,
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Camera` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_for_random_spheres` is never used
[INFO] [stdout]   --> src/camera.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn camera_for_random_spheres(nx: u32, ny: u32) -> Camera {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_for_two_spheres` is never used
[INFO] [stdout]    --> src/camera.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn camera_for_two_spheres(nx: u32, ny: u32) -> Camera {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Metal` is never constructed
[INFO] [stdout]   --> src/material.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Metal {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/material.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Metal {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(v: (f32, f32, f32), fuzz: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reflect` is never used
[INFO] [stdout]    --> src/material.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn reflect(v: Vec3, n: Vec3) -> Vec3 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dielectric` is never constructed
[INFO] [stdout]    --> src/material.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct Dielectric {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/material.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Dielectric {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 114 |     pub fn new(refract_idx: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `refract` is never used
[INFO] [stdout]    --> src/material.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn refract(v: &Vec3, n: &Vec3, ni_over_nt: f32) -> Option<Vec3> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `schlick` is never used
[INFO] [stdout]    --> src/material.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn schlick(cosine: f32, refract_idx: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Perlin` is never constructed
[INFO] [stdout]  --> src/perlin.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Perlin {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `noise`, and `turbulence` are never used
[INFO] [stdout]   --> src/perlin.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Perlin {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn noise(&self, p: &Vec3) -> f32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn turbulence(&self, p: &Vec3, depth: usize) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate` is never used
[INFO] [stdout]   --> src/perlin.rs:55:4
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn perlin_generate() -> Vec<Vec3> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate_perm` is never used
[INFO] [stdout]   --> src/perlin.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn perlin_generate_perm() -> Vec<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_interp` is never used
[INFO] [stdout]   --> src/perlin.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn perlin_interp(c: &[[[Vec3; 2]; 2]; 2], u: f32, v: f32, w: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene` is never used
[INFO] [stdout]   --> src/scene.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn random_scene() -> HitableList {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene_with_motion` is never used
[INFO] [stdout]   --> src/scene.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn random_scene_with_motion() -> HitableList {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `two_spheres` is never used
[INFO] [stdout]    --> src/scene.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn two_spheres() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `two_perlin_spheres` is never used
[INFO] [stdout]    --> src/scene.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn two_perlin_spheres() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `earth` is never used
[INFO] [stdout]    --> src/scene.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn earth() -> HitableList {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simple_light` is never used
[INFO] [stdout]    --> src/scene.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn simple_light() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cornell_box` is never used
[INFO] [stdout]    --> src/scene.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn cornell_box() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sphere` is never constructed
[INFO] [stdout]   --> src/sphere.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Sphere<M: Material> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sphere.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl<M: Material> Sphere<M> {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new(center: Vec3, radius: f32, material: M) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingSphere` is never constructed
[INFO] [stdout]   --> src/sphere.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct MovingSphere<M: Material> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `center_at_time` are never used
[INFO] [stdout]    --> src/sphere.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl<M: Material> MovingSphere<M> {
[INFO] [stdout]     | --------------------------------- associated items in this implementation
[INFO] [stdout]  83 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn center_at_time(&self, time: f32) -> Vec3 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sphere_uv` is never used
[INFO] [stdout]    --> src/sphere.rs:159:4
[INFO] [stdout]     |
[INFO] [stdout] 159 | fn get_sphere_uv(p: &Vec3) -> (f32, f32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CheckerTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct CheckerTexture<T: Texture, U: Texture> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/texture.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl<T: Texture, U: Texture> CheckerTexture<T, U> {
[INFO] [stdout]    | ------------------------------------------------- associated function in this implementation
[INFO] [stdout] 34 |     pub fn new(odd: T, even: U) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NoiseTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NoiseTexture {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/texture.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl NoiseTexture {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(scale: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct ImageTexture {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/texture.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl ImageTexture {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(data: Vec<u8>, nx: u32, ny: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/texture.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn clamp(x: f32, max: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/block.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/flip.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hitable.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hitable_list.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/medium.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/rectangle.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/sphere.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/sphere.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]     |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/translate.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/translate.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/block.rs:88:28
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/block.rs:88:37
[INFO] [stdout]    |
[INFO] [stdout] 88 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `bbox`
[INFO] [stdout]   --> src/hitable_list.rs:34:29
[INFO] [stdout]    |
[INFO] [stdout] 34 |                         let bbox = surrounding_box(bbox, temp_box);
[INFO] [stdout]    |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_bbox`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]   --> src/sphere.rs:64:28
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]   --> src/sphere.rs:64:37
[INFO] [stdout]    |
[INFO] [stdout] 64 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]    |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `p`
[INFO] [stdout]   --> src/texture.rs:90:37
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn value(&self, u: f32, v: f32, p: &Vec3) -> Vec3 {
[INFO] [stdout]    |                                     ^ help: if this is intentional, prefix it with an underscore: `_p`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t0`
[INFO] [stdout]    --> src/translate.rs:113:28
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                            ^^ help: if this is intentional, prefix it with an underscore: `_t0`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `t1`
[INFO] [stdout]    --> src/translate.rs:113:37
[INFO] [stdout]     |
[INFO] [stdout] 113 |     fn bounding_box(&self, t0: f32, t1: f32) -> Option<AABB> {
[INFO] [stdout]     |                                     ^^ help: if this is intentional, prefix it with an underscore: `_t1`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `hit` is never used
[INFO] [stdout]   --> src/aabb.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl AABB {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub fn hit(&self, r: &Ray, tmin: f32, tmax: f32) -> bool {
[INFO] [stdout]    |            ^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `w` is never read
[INFO] [stdout]   --> src/camera.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout]  7 | pub struct Camera {
[INFO] [stdout]    |            ------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 14 |     pub w: Vec3,
[INFO] [stdout]    |         ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Camera` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_for_random_spheres` is never used
[INFO] [stdout]   --> src/camera.rs:83:8
[INFO] [stdout]    |
[INFO] [stdout] 83 | pub fn camera_for_random_spheres(nx: u32, ny: u32) -> Camera {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `camera_for_two_spheres` is never used
[INFO] [stdout]    --> src/camera.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn camera_for_two_spheres(nx: u32, ny: u32) -> Camera {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Metal` is never constructed
[INFO] [stdout]   --> src/material.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct Metal {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/material.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl Metal {
[INFO] [stdout]    | ---------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(v: (f32, f32, f32), fuzz: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `reflect` is never used
[INFO] [stdout]    --> src/material.rs:104:4
[INFO] [stdout]     |
[INFO] [stdout] 104 | fn reflect(v: Vec3, n: Vec3) -> Vec3 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Dielectric` is never constructed
[INFO] [stdout]    --> src/material.rs:109:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | pub struct Dielectric {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]    --> src/material.rs:114:12
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl Dielectric {
[INFO] [stdout]     | --------------- associated function in this implementation
[INFO] [stdout] 114 |     pub fn new(refract_idx: f32) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `refract` is never used
[INFO] [stdout]    --> src/material.rs:166:4
[INFO] [stdout]     |
[INFO] [stdout] 166 | fn refract(v: &Vec3, n: &Vec3, ni_over_nt: f32) -> Option<Vec3> {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `schlick` is never used
[INFO] [stdout]    --> src/material.rs:178:4
[INFO] [stdout]     |
[INFO] [stdout] 178 | fn schlick(cosine: f32, refract_idx: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Perlin` is never constructed
[INFO] [stdout]  --> src/perlin.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Perlin {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `noise`, and `turbulence` are never used
[INFO] [stdout]   --> src/perlin.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Perlin {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn noise(&self, p: &Vec3) -> f32 {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn turbulence(&self, p: &Vec3, depth: usize) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate` is never used
[INFO] [stdout]   --> src/perlin.rs:55:4
[INFO] [stdout]    |
[INFO] [stdout] 55 | fn perlin_generate() -> Vec<Vec3> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_generate_perm` is never used
[INFO] [stdout]   --> src/perlin.rs:68:4
[INFO] [stdout]    |
[INFO] [stdout] 68 | fn perlin_generate_perm() -> Vec<usize> {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perlin_interp` is never used
[INFO] [stdout]   --> src/perlin.rs:75:4
[INFO] [stdout]    |
[INFO] [stdout] 75 | fn perlin_interp(c: &[[[Vec3; 2]; 2]; 2], u: f32, v: f32, w: f32) -> f32 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene` is never used
[INFO] [stdout]   --> src/scene.rs:16:8
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub fn random_scene() -> HitableList {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `random_scene_with_motion` is never used
[INFO] [stdout]   --> src/scene.rs:95:8
[INFO] [stdout]    |
[INFO] [stdout] 95 | pub fn random_scene_with_motion() -> HitableList {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `two_spheres` is never used
[INFO] [stdout]    --> src/scene.rs:181:8
[INFO] [stdout]     |
[INFO] [stdout] 181 | pub fn two_spheres() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `two_perlin_spheres` is never used
[INFO] [stdout]    --> src/scene.rs:202:8
[INFO] [stdout]     |
[INFO] [stdout] 202 | pub fn two_perlin_spheres() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `earth` is never used
[INFO] [stdout]    --> src/scene.rs:220:8
[INFO] [stdout]     |
[INFO] [stdout] 220 | pub fn earth() -> HitableList {
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `simple_light` is never used
[INFO] [stdout]    --> src/scene.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn simple_light() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cornell_box` is never used
[INFO] [stdout]    --> src/scene.rs:269:8
[INFO] [stdout]     |
[INFO] [stdout] 269 | pub fn cornell_box() -> HitableList {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Sphere` is never constructed
[INFO] [stdout]   --> src/sphere.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub struct Sphere<M: Material> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sphere.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 16 | impl<M: Material> Sphere<M> {
[INFO] [stdout]    | --------------------------- associated function in this implementation
[INFO] [stdout] 17 |     pub fn new(center: Vec3, radius: f32, material: M) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MovingSphere` is never constructed
[INFO] [stdout]   --> src/sphere.rs:73:12
[INFO] [stdout]    |
[INFO] [stdout] 73 | pub struct MovingSphere<M: Material> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `center_at_time` are never used
[INFO] [stdout]    --> src/sphere.rs:83:12
[INFO] [stdout]     |
[INFO] [stdout]  82 | impl<M: Material> MovingSphere<M> {
[INFO] [stdout]     | --------------------------------- associated items in this implementation
[INFO] [stdout]  83 |     pub fn new(
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 101 |     pub fn center_at_time(&self, time: f32) -> Vec3 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_sphere_uv` is never used
[INFO] [stdout]    --> src/sphere.rs:159:4
[INFO] [stdout]     |
[INFO] [stdout] 159 | fn get_sphere_uv(p: &Vec3) -> (f32, f32) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CheckerTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub struct CheckerTexture<T: Texture, U: Texture> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/texture.rs:34:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl<T: Texture, U: Texture> CheckerTexture<T, U> {
[INFO] [stdout]    | ------------------------------------------------- associated function in this implementation
[INFO] [stdout] 34 |     pub fn new(odd: T, even: U) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NoiseTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct NoiseTexture {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/texture.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 56 | impl NoiseTexture {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 57 |     pub fn new(scale: f32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ImageTexture` is never constructed
[INFO] [stdout]   --> src/texture.rs:77:12
[INFO] [stdout]    |
[INFO] [stdout] 77 | pub struct ImageTexture {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/texture.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 83 | impl ImageTexture {
[INFO] [stdout]    | ----------------- associated function in this implementation
[INFO] [stdout] 84 |     pub fn new(data: Vec<u8>, nx: u32, ny: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clamp` is never used
[INFO] [stdout]    --> src/texture.rs:109:4
[INFO] [stdout]     |
[INFO] [stdout] 109 | fn clamp(x: f32, max: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/block.rs:84:12
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 84 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/flip.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hitable.rs:18:12
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord>;
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 18 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>>;
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/hitable_list.rs:16:12
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 16 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/medium.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/rectangle.rs:38:12
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 38 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/sphere.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 27 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/sphere.rs:108:12
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]     |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 108 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/translate.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 20 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]   --> src/translate.rs:90:12
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord> {
[INFO] [stdout]    |            ^^^^^ the lifetime is elided here                 ^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]    |
[INFO] [stdout] 90 |     fn hit(&self, r: &Ray, t_min: f32, t_max: f32) -> Option<HitRecord<'_>> {
[INFO] [stdout]    |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.82s
[INFO] running `Command { std: "docker" "inspect" "6c4dbff8c282f5f1e8b8b514b27f637ed0c040357edd2c1ebcc3d35be5a57594", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "6c4dbff8c282f5f1e8b8b514b27f637ed0c040357edd2c1ebcc3d35be5a57594", kill_on_drop: false }`
[INFO] [stdout] 6c4dbff8c282f5f1e8b8b514b27f637ed0c040357edd2c1ebcc3d35be5a57594
